#ifndef _CODER_
#define _CODER_
#include "stdafx.h"

struct DataCode
{
	int _bitSize;
	int _code;
};

struct DictData
{
	int _dataSize;
	BYTE* _data;
};

struct DictItem
{
	DataCode _code;
	DictData _data;
};

class Coder
{
public:
	virtual ~Coder() {};
	
	virtual void Input(BYTE data) = 0;
	virtual void Parse() = 0;
	virtual void InputBlock(BYTE* data, int _dataSize) = 0;
	virtual bool GetNextDictItem(DictItem* di) = 0;
	virtual bool GetNextCode(DataCode* oc) = 0;
	
	virtual int GetDictItemCount() = 0;
	virtual int GetDataCount() = 0;
};

#endif